void main() {
  //List集合,可以重复
  List list = ['a', 'b'];
  var list2 = [];
  list2.add("fauks");
  print(list.length);
  print(list.isEmpty);
  //反转数组并转换为一个集合
  print(list.reversed.toList());

  //修改数组,可以一次修改多个
  list.fillRange(1, 2, 'hehehe');

  //插入
  list.insert(1, 'insert');
  print(list);

  //转换为字符串，以|分割
  var join = list.join('|');
  print(join is String);

  //String转List
  var listStr = "a,b,c,d";
  List split = listStr.split(",");

  //Set集合 不可重复，只能通过构造方法创建对象
  var set = new Set();
  set.add("fauks");
  set.add("bob");
  set.add("bob");
  set.add("jay");
  print(set);
  //Set转List
  print(set.toList());
  // 如果要对List去重，可以将List添加到Set中
  set.addAll(list); //再转换为List

  //Maps类型->映射类型
  var person = {"name": "fauks", "age": 12};
  //获取所有key、values
  print(person.keys.toList());
  print(person.values.toList());
  print(person.isNotEmpty); //map是否不为空
  //属性扩展,增加键值对
  person.addAll({
    "address": ["q", "d"]
  });
  person.containsKey("name"); //map中是否存在某个key

  //遍历List
  for (var value in list) {
    print(value);
  }

  list.forEach((value) {
    print(value);
  });

  //上述只有一行逻辑时 可以简化写法
  list.forEach((value) => print(value));

  //修改值-->遍历 比较繁琐
  var newList = list.map((value) {
    return value * 4;
  });
  print(newList.toList());

  //过滤
  list.where((value) {
    return value > 5;
  });

  //集合中任意一个满足条件就返回true，类似的还有every
  list.any((value) {
    return value == '3';
  });

  //遍历map
  person.forEach((key, value) => print('$key------$value'));

}
